import { expect, test } from 'vitest'

import { toBytes } from '../encoding/toBytes.js'
import { toHex } from '../encoding/toHex.js'

import { encodeAbiParameters, keccak256, parseAbiParameters } from '../index.js'
import {
  getContractAddress,
  getCreate2Address,
  getCreateAddress,
} from './getContractAddress.js'

test('gets contract address (CREATE)', () => {
  expect(
    getContractAddress({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      nonce: 0n,
    }),
  ).toMatchInlineSnapshot('"0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2"')

  expect(
    getContractAddress({
      from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
      nonce: 5n,
    }),
  ).toMatchInlineSnapshot('"0x30b3F7E5B61d6343Af9B4f98Ed92c003d8fc600F"')

  expect(
    getContractAddress({
      from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b',
      nonce: 69420n,
    }),
  ).toMatchInlineSnapshot('"0xDf2e056f7062790dF95A472f691670717Ae7b1B6"')

  expect(
    getCreateAddress({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      nonce: 0n,
    }),
  ).toMatchInlineSnapshot('"0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2"')
})

test('gets contract address (CREATE2)', () => {
  expect(
    getContractAddress({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      bytecode: '0x6394198df16000526103ff60206004601c335afa6040516060f3',
      salt: toBytes('hello world'),
      opcode: 'CREATE2',
    }),
  ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
  expect(
    getContractAddress({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      bytecode: toBytes(
        '0x6394198df16000526103ff60206004601c335afa6040516060f3',
      ),
      salt: toBytes('hello world'),
      opcode: 'CREATE2',
    }),
  ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
  expect(
    getCreate2Address({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      bytecode: toBytes(
        '0x6394198df16000526103ff60206004601c335afa6040516060f3',
      ),
      salt: toHex('hello world'),
    }),
  ).toMatchInlineSnapshot('"0x59fbB593ABe27Cb193b6ee5C5DC7bbde312290aB"')
  expect(
    getCreate2Address({
      from: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
      bytecodeHash: toBytes(
        '0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54',
      ),
      salt: keccak256(
        encodeAbiParameters(parseAbiParameters('address, address, uint24'), [
          '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
          '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
          500,
        ]),
      ),
    }),
  ).toMatchInlineSnapshot('"0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"')
  expect(
    getCreate2Address({
      from: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
      bytecodeHash:
        '0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54',
      salt: keccak256(
        encodeAbiParameters(parseAbiParameters('address, address, uint24'), [
          '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
          '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
          500,
        ]),
      ),
    }),
  ).toMatchInlineSnapshot('"0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"')
  expect(
    getContractAddress({
      from: '0x1F98431c8aD98523631AE4a59f267346ea31F984',
      bytecodeHash: toBytes(
        '0xe34f199b19b2b4f47f68442619d555527d244f78a3297ea89325f843f87b8b54',
      ),
      salt: keccak256(
        encodeAbiParameters(parseAbiParameters('address, address, uint24'), [
          '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
          '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2',
          500,
        ]),
      ),
      opcode: 'CREATE2',
    }),
  ).toMatchInlineSnapshot('"0x88e6A0c2dDD26FEEb64F039a2c41296FcB3f5640"')
  expect(
    getContractAddress({
      from: '0x1a1e021a302c237453d3d45c7b82b19ceeb7e2e6',
      bytecode:
        '0x60096102c0818152682bb0b93430b6b6b2b960b91b6102e0526080908152600c6103008181526b28bab0b93a32b939ba30b33360a11b6103205260a05260046103408181526313585d5b60e21b6103605260c052610380818152634d61636560e01b6103a05260e0526103c08181526321b63ab160e11b6103e052610100526006610400908152654b6174616e6160d01b61042052610120526008610440818152672330b631b434b7b760c11b61046052610140526104808181526729b1b4b6b4ba30b960c11b6104a05261016052600a6104c081815269131bdb99c814dddbdc9960b21b6104e05261018052600b6105009081526a14da1bdc9d0814dddbdc9960aa1b610520526101a0526105408181526911da1bdcdd0815d85b9960b21b610560526101c0526105809081526911dc985d994815d85b9960b21b6105a0526101e0526105c085815268109bdb994815d85b9960ba1b6105e052610200526106008281526315d85b9960e21b6106205261022052610640908152674772696d6f69726560c01b6106605261024052610680938452684368726f6e69636c6560b81b6106a052610260939093526106c083815263546f6d6560e01b6106e0526102805261074060405261070092835263426f6f6b60e01b610720526102a092909252620001ef9190601262001d24565b506040805161022081018252600b6101e082019081526a446976696e6520526f626560a81b61020083015281528151808301835260098082526853696c6b20526f626560b81b6020838101919091528084019290925283518085018552600a808252694c696e656e20526f626560b01b8285015284860191909152845180860186526004815263526f626560e01b81850152606085015284518086018652600581526414da1a5c9d60da1b818501526080850152845180860186528181526944656d6f6e204875736b60b01b8185015260a085015284518086018652601081526f223930b3b7b739b5b4b71020b936b7b960811b8185015260c085015284518086018652601581527f53747564646564204c6561746865722041726d6f7200000000000000000000008185015260e08501528451808601865260128152712430b932102632b0ba3432b91020b936b7b960711b8185015261010085015284518086018652600d8082526c2632b0ba3432b91020b936b7b960991b8286015261012086019190915285518087018752600f8082526e486f6c79204368657374706c61746560881b828701526101408701919091528651808801885260118152704f726e617465204368657374706c61746560781b818701526101608701528651808801885283815269141b185d194813585a5b60b21b81870152610180870152865180880188529283526910da185a5b8813585a5b60b21b838601526101a0860192909252855180870190965291855268149a5b99c813585a5b60ba1b928501929092526101c08301939093526200044892919062001d88565b50604051806101e001604052806040518060400160405280600c81526020016b416e6369656e742048656c6d60a01b81525081526020016040518060400160405280600b81526020016a4f726e6174652048656c6d60a81b81525081526020016040518060400160405280600a81526020016947726561742048656c6d60b01b81525081526020016040518060400160405280600981526020016846756c6c2048656c6d60b81b81525081526020016040518060400160405280600481526020016348656c6d60e01b81525081526020016040518060400160405280600b81526020016a2232b6b7b71021b937bbb760a91b81525081526020016040518060400160405280600e81526020016d223930b3b7b713b99021b937bbb760911b8152508152602001604051806040016040528060078152602001660576172204361760cc1b81525081526020016040518060400160405280600b81526020016a04c656174686572204361760ac1b81525081526020016040518060400160405280600381526020016204361760ec1b81525081526020016040518060400160405280600581526020016421b937bbb760d91b81525081526020016040518060400160405280600b81526020016a111a5d9a5b9948121bdbd960aa1b81525081526020016040518060400160405280600981526020016814da5b1ac8121bdbd960ba1b81525081526020016040518060400160405280600a815260200169131a5b995b88121bdbd960b21b815250815260200160405180604001604052806004815260200163121bdbd960e21b815250815250600e90600f620006aa92919062001d88565b506040805161022081018252600b6101e082018181526a13dc9b985d194810995b1d60aa1b610200840152825282518084018452600881526715d85c8810995b1d60c21b60208281019190915280840191909152835180850185529182526a141b185d19590810995b1d60aa1b82820152828401919091528251808401845260098082526813595cda0810995b1d60ba1b82840152606084019190915283518085018552600a808252691219585d9e4810995b1d60b21b82850152608085019190915284518086018652600e81526d11195b5bdb9a1a59194810995b1d60921b8185015260a085015284518086018652600f8082526e111c9859dbdb9cdada5b8810995b1d608a1b8286015260c086019190915285518087018752601481527f53747564646564204c6561746865722042656c740000000000000000000000008186015260e086015285518087018752601181527012185c99081319585d1a195c8810995b1d607a1b8186015261010086015285518087018752600c81526b1319585d1a195c8810995b1d60a21b81860152610120860152855180870187528181526e084e4d2ced0e8e6d2d8d640a6c2e6d608b1b8186015261014086015285518087018752838152680a6d2d8d640a6c2e6d60bb1b8186015261016086015285518087018752928352680aededed840a6c2e6d60bb1b838501526101808501929092528451808601865290815269098d2dccadc40a6c2e6d60b31b818401526101a0840152835180850190945260048452630a6c2e6d60e31b918401919091526101c08201929092526200090191908162001d88565b506040805161022081018252600c6101e082019081526b486f6c79204772656176657360a01b610200830152815281518083018352600e81526d4f726e617465204772656176657360901b602082810191909152808301919091528251808401845260078152664772656176657360c81b818301528284015282518084018452600b8082526a436861696e20426f6f747360a81b828401526060840191909152835180850185528181526a486561767920426f6f747360a81b81840152608084015283518085018552600f8082526e44656d6f6e6869646520426f6f747360881b8285015260a08501919091528451808601865260108082526f447261676f6e736b696e20426f6f747360801b8286015260c086019190915285518087018752601581527f53747564646564204c65617468657220426f6f747300000000000000000000008186015260e086015285518087018752601281527148617264204c65617468657220426f6f747360701b8186015261010086015285518087018752600d8082526c4c65617468657220426f6f747360981b82870152610120870191909152865180880188528381526e446976696e6520536c69707065727360881b81870152610140870152865180880188529081526c53696c6b20536c69707065727360981b8186015261016086015285518087018752600a815269576f6f6c2053686f657360b01b81860152610180860152855180870187529283526a4c696e656e2053686f657360a81b838501526101a08501929092528451808601909552600585526453686f657360d81b928501929092526101c083019390935262000b6b92919062001d88565b506040805161022081018252600e6101e082018181526d486f6c79204761756e746c65747360901b610200840152825282518084018452601081526f4f726e617465204761756e746c65747360801b602082810191909152808401919091528351808501855260098152684761756e746c65747360b81b818301528385015283518085018552600c8082526b436861696e20476c6f76657360a01b828401526060850191909152845180860186528181526b486561767920476c6f76657360a01b81840152608085015284518086018652600d8082526c44656d6f6e27732048616e647360981b8285015260a086019190915285518087018752601180825270447261676f6e736b696e20476c6f76657360781b8286015260c087019190915286518088018852601681527f53747564646564204c65617468657220476c6f766573000000000000000000008186015260e087015286518088018852601381527f48617264204c65617468657220476c6f7665730000000000000000000000000081860152610100870152865180880188529485526d4c65617468657220476c6f76657360901b85850152610120860194909452855180870187529081526c446976696e6520476c6f76657360981b8184015261014085015284518086018652600b8082526a53696c6b20476c6f76657360a81b82850152610160860191909152855180870187529081526a576f6f6c20476c6f76657360a81b81840152610180850152845180860186529081526b4c696e656e20476c6f76657360a01b818301526101a084015283518085019094526006845265476c6f76657360d01b908401526101c082019290925262000de49190600f62001d88565b506040518060600160405280604051806040016040528060088152602001674e65636b6c61636560c01b815250815260200160405180604001604052806006815260200165105b5d5b195d60d21b81525081526020016040518060400160405280600781526020016614195b99185b9d60ca1b815250815250601290600362000e6f92919062001dda565b506040805160e081018252600960a0820190815268476f6c642052696e6760b81b60c0830152815281518083018352600b8082526a53696c7665722052696e6760a81b60208381019190915280840192909252835180850185529081526a42726f6e7a652052696e6760a81b818301528284015282518084018452600d8082526c506c6174696e756d2052696e6760981b828401526060840191909152835180850190945283526c546974616e69756d2052696e6760981b90830152608081019190915262000f4390601390600562001e2c565b506040805161024081018252600861020082018181526737b3102837bbb2b960c11b6102208401528252825180840184526009808252686f66204769616e747360b81b6020838101919091528085019290925284518086018652908152686f6620546974616e7360b81b818301528385015283518085018552828152671bd98814dada5b1b60c21b81830152606084015283518085018552600d8082526c37b3102832b93332b1ba34b7b760991b828401526080850191909152845180860186528181526c6f66204272696c6c69616e636560981b8184015260a08501528451808601865260108082526f1bd988115b9b1a59da1d195b9b595b9d60821b8285015260c0860191909152855180870187528281526c37b310283937ba32b1ba34b7b760991b8185015260e0860152855180870187529384526737b31020b733b2b960c11b84840152610100850193909352845180860186526007808252666f66205261676560c81b8285015261012086019190915285518087018752908152666f66204675727960c81b8184015261014085015284518086018652600a808252691bd988159a5d1c9a5bdb60b21b8285015261016086019190915285518087018752908152690decc40e8d0ca408cdef60b31b8184015261018085015284518086018652600c8082526b37b3102232ba32b1ba34b7b760a11b828501526101a0860191909152855180870187529182526c37b3102932b33632b1ba34b7b760991b828401526101c0850191909152845180860190955284526b6f6620746865205477696e7360a01b908401526101e0820192909252620011a7916014919062001e7e565b50604080516108e08101825260056108a082018181526441676f6e7960d81b6108c0840152825282518084018452600a8082526941706f63616c7970736560b01b60208381019190915280850192909252845180860186528181526920b936b0b3b2b23237b760b11b818401528486015284518086018652838152641099585cdd60da1b81840152606085015284518086018652600880825267084cad0cadadee8d60c31b82850152608086019190915285518087018752600680825265109b1a59da1d60d21b8286015260a08701919091528651808801885285815264109b1bdbd960da1b8186015260c0870152865180880188526007808252664272616d626c6560c81b8287015260e0880191909152875180890189526009808252684272696d73746f6e6560b81b828801526101008901919091528851808a018a5287815264109c9bdbd960da1b818801526101208901528851808a018a528281526621b0b93934b7b760c91b818801526101408901528851808a018a528181526843617461636c79736d60b81b818801526101608901528851808a018a52848152674368696d6572696360c01b818801526101808901528851808a018a5283815265436f7270736560d01b818801526101a08901528851808a018a528581526921b7b9393ab83a34b7b760b11b818801526101c08901528851808a018a52818152682230b6b730ba34b7b760b91b818801526101e08901528851808a018a5287815264088cac2e8d60db1b818801526102008901528851808a018a52878152642232b6b7b760d91b818801526102208901528851808a018a526004808252634469726560e01b828901526102408a01919091528951808b018b5284815265223930b3b7b760d11b818901526102608a01528951808b018b5288815264111c99585960da1b818901526102808a01528951808b018b5281815263446f6f6d60e01b818901526102a08a01528951808b018b52818152634475736b60e01b818901526102c08a01528951808b018b52888152644561676c6560d81b818901526102e08a01528951808b018b528581526722b6b83cb932b0b760c11b818901526103008a01528951808b018b52818152634661746560e01b818901526103208a01528951808b018b52600380825262466f6560e81b828a01526103408b01919091528a51808c018c528281526347616c6560e01b818a01526103608b01528a51808c018c528981526411da1bdd5b60da1b818a01526103808b01528a51808c018c5289815264476c6f6f6d60d81b818a01526103a08b01528a51808c018c528981526408ed8f2e0d60db1b818a01526103c08b01528a51808c018c5289815264476f6c656d60d81b818a01526103e08b01528a51808c018c52828152634772696d60e01b818a01526104008b01528a51808c018c52828152634861746560e01b818a01526104208b01528a51808c018c52898152644861766f6360d81b818a01526104408b01528a51808c018c52858152652437b737bab960d11b818a01526104608b01528a51808c018c52858152652437b93937b960d11b818a01526104808b01528a51808c018c52868152674879706e6f74696360c01b818a01526104a08b01528a51808c018c528581526525b930b5b2b760d11b818a01526104c08b01528a51808c018c5289815264098dec2e8d60db1b818a01526104e08b01528a51808c018c52838152684d61656c7374726f6d60b81b818a01526105008b01528a51808c018c5282815263135a5b9960e21b818a01526105208b01528a51808c018c52848152664d697261636c6560c81b818a01526105408b01528a51808c018c5285815265135bdc989a5960d21b818a01526105608b01528a51808c018c529586526727b13634bb34b7b760c11b868901526105808a01959095528951808b018b528281526813db9cdb185d59da1d60ba1b818901526105a08a01528951808b018b52818152632830b4b760e11b818901526105c08a01528951808b018b52600b81526a50616e64656d6f6e69756d60a81b818901526105e08a01528951808b018b52838152660a0d0decadcd2f60cb1b818901526106008a01528951808b018b5284815265506c6167756560d01b818901526106208a01528951808b018b52818152635261676560e01b818901526106408a01528951808b018b52838152665261707475726560c81b818901526106608a01528951808b018b528181526352756e6560e01b818901526106808a01528951808b018b528881526414dadd5b1b60da1b818901526106a08a01528951808b018b528581526214dbdb60ea1b818901526106c08a01528951808b018b529081526314dbdd5b60e21b818801526106e08901528851808a018a5283815265536f72726f7760d01b818801526107008901528851808a018a528381526514dc1a5c9a5d60d21b818801526107208901528851808a018a528781526453746f726d60d81b818801526107408901528851808a018a528281526615195b5c195cdd60ca1b818801526107608901528851808a018a5282815266151bdc9b595b9d60ca1b818801526107808901528851808a018a529081526856656e6765616e636560b81b818701526107a08801528751808901895281815266566963746f727960c81b818701526107c088015287518089018952868152642b34b832b960d91b818701526107e088015287518089018952918252650acdee4e8caf60d31b828601526108008701919091528651808801885291825262576f6560e81b8285015261082086019190915285518087018752938452640aee4c2e8d60db1b8484015261084085019390935284518086018652928352664c69676874277360c81b838301526108608401929092528351808501909452908352695368696d6d6572696e6760b01b9083015261088081019190915262001a1190601590604562001ed0565b506040805161028081018252600461024082018181526342616e6560e01b61026084015282528251808401845281815263149bdbdd60e21b6020828101919091528084019190915283518085018552828152634269746560e01b81830152838501528351808501855282815263536f6e6760e01b81830152606084015283518085018552828152632937b0b960e11b81830152608084015283518085018552600580825264047726173760dc1b8284015260a085019190915284518086018652600a815269125b9cdd1c9d5b595b9d60b21b8184015260c08501528451808601865283815263476c6f7760e01b8184015260e0850152845180860186526006808252652132b73232b960d11b828501526101008601919091528551808701875290815265536861646f7760d01b818401526101208501528451808601865260078152662bb434b9b832b960c91b81840152610140850152845180860186528181526414da1bdd5d60da1b81840152610160850152845180860186529081526411dc9bdddb60da1b8183015261018084015283518085018552828152632a32b0b960e11b818301526101a084015283518085018552828152635065616b60e01b818301526101c08401528351808501855282815263466f726d60e01b818301526101e084015283518085018552600381526229bab760e91b8183015261020084015283518085019094529083526326b7b7b760e11b9083015261022081019190915262001c4290601690601262001d24565b5034801562001c5057600080fd5b5060405180604001604052806004815260200163131bdbdd60e21b815250604051806040016040528060048152602001631313d3d560e21b815250816000908051906020019062001ca392919062001f22565b50805162001cb990600190602084019062001f22565b50506001600a555062001ccc3362001cd2565b62002064565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001d6591849160209091019062001f22565b509160200191906001019062001d45565b5062001d8492915062001fad565b5090565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001dc991849160209091019062001f22565b509160200191906001019062001da9565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001e1b91849160209091019062001f22565b509160200191906001019062001dfb565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001e6d91849160209091019062001f22565b509160200191906001019062001e4d565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001ebf91849160209091019062001f22565b509160200191906001019062001e9f565b82805482825590600052602060002090810192821562001d76579160200282015b8281111562001d76578251805162001f1191849160209091019062001f22565b509160200191906001019062001ef1565b82805462001f309062002027565b90600052602060002090601f01602090048101928262001f54576000855562001f9f565b82601f1062001f6f57805160ff191683800117855562001f9f565b8280016001018555821562001f9f579182015b8281111562001f9f57825182559160200191906001019062001f82565b5062001d8492915062001fce565b8082111562001d8457600062001fc4828262001fe5565b5060010162001fad565b5b8082111562001d84576000815560010162001fcf565b50805462001ff39062002027565b6000825580601f1062002004575050565b601f01602090049060005260206000209081019062002024919062001fce565b50565b600181811c908216806200203c57607f821691505b602082108114156200205e57634e487b7160e01b600052602260045260246000fd5b50919050565b61320c80620020746000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806370a0823111610104578063a22cb465116100a2578063d47f269e11610071578063d47f269e146103c7578063e985e9c5146103da578063ef68075a14610416578063f2fde38b1461042957600080fd5b8063a22cb4651461037b578063b88d4fde1461038e578063c08a5dd5146103a1578063c87b56dd146103b457600080fd5b806395d89b41116100de57806395d89b411461033a5780639720c969146103425780639bdc1b69146103555780639e41b73f1461036857600080fd5b806370a082311461030e578063715018a6146103215780638da5cb5b1461032957600080fd5b80632f745c5911610171578063434f48c41161014b578063434f48c4146102c25780634f6ccce7146102d55780636352211e146102e857806367209aa8146102fb57600080fd5b80632f745c5914610289578063379607f51461029c57806342842e0e146102af57600080fd5b8063095ea7b3116101ad578063095ea7b31461023c5780630e99990d1461025157806318160ddd1461026457806323b872dd1461027657600080fd5b806301ffc9a7146101d457806306fdde03146101fc578063081812fc14610211575b600080fd5b6101e76101e23660046127f8565b61043c565b60405190151581526020015b60405180910390f35b610204610467565b6040516101f39190612d42565b61022461021f366004612830565b6104f9565b6040516001600160a01b0390911681526020016101f3565b61024f61024a3660046127cf565b610593565b005b61020461025f366004612830565b6106a9565b6008545b6040519081526020016101f3565b61024f610284366004612685565b6107a3565b6102686102973660046127cf565b6107d4565b61024f6102aa366004612830565b61086a565b61024f6102bd366004612685565b610924565b61024f6102d0366004612830565b61093f565b6102686102e3366004612830565b610a27565b6102246102f6366004612830565b610ac8565b610204610309366004612830565b610b3f565b61026861031c366004612632565b610c30565b61024f610cb7565b600b546001600160a01b0316610224565b610204610ced565b610204610350366004612830565b610cfc565b610204610363366004612830565b610ded565b610204610376366004612830565b610edf565b61024f610389366004612795565b610fd2565b61024f61039c3660046126c0565b611097565b6102046103af366004612830565b6110cf565b6102046103c2366004612830565b6111c0565b6102046103d5366004612830565b611468565b6101e76103e8366004612653565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205460ff1690565b610204610424366004612830565b611559565b61024f610437366004612632565b61164b565b60006001600160e01b0319821663780e9d6360e01b14806104615750610461826116e6565b92915050565b60606000805461047690612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546104a290612ebb565b80156104ef5780601f106104c4576101008083540402835291602001916104ef565b820191906000526020600020905b8154815290600101906020018083116104d257829003601f168201915b5050505050905090565b6000818152600260205260408120546001600160a01b03166105775760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a20617070726f76656420717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b60648201526084015b60405180910390fd5b506000908152600460205260409020546001600160a01b031690565b600061059e82610ac8565b9050806001600160a01b0316836001600160a01b0316141561060c5760405162461bcd60e51b815260206004820152602160248201527f4552433732313a20617070726f76616c20746f2063757272656e74206f776e656044820152603960f91b606482015260840161056e565b336001600160a01b0382161480610628575061062881336103e8565b61069a5760405162461bcd60e51b815260206004820152603860248201527f4552433732313a20617070726f76652063616c6c6572206973206e6f74206f7760448201527f6e6572206e6f7220617070726f76656420666f7220616c6c0000000000000000606482015260840161056e565b6106a48383611736565b505050565b606061046182604051806040016040528060048152602001631193d3d560e21b8152506010805480602002602001604051908101604052809291908181526020016000905b8282101561079a57838290600052602060002001805461070d90612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461073990612ebb565b80156107865780601f1061075b57610100808354040283529160200191610786565b820191906000526020600020905b81548152906001019060200180831161076957829003601f168201915b5050505050815260200190600101906106ee565b505050506117a4565b6107ad3382611ad1565b6107c95760405162461bcd60e51b815260040161056e90612ddc565b6106a4838383611bc8565b60006107df83610c30565b82106108415760405162461bcd60e51b815260206004820152602b60248201527f455243373231456e756d657261626c653a206f776e657220696e646578206f7560448201526a74206f6620626f756e647360a81b606482015260840161056e565b506001600160a01b03919091166000908152600660209081526040808320938352929052205490565b6002600a5414156108bd5760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056e565b6002600a5580158015906108d25750611e6281105b6109115760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881251081a5b9d985b1a5960821b604482015260640161056e565b61091c335b82611d73565b506001600a55565b6106a483838360405180602001604052806000815250611097565b6002600a5414156109925760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604482015260640161056e565b6002600a55600b546001600160a01b031633146109c15760405162461bcd60e51b815260040161056e90612da7565b611e61811180156109d35750611f4181105b610a125760405162461bcd60e51b815260206004820152601060248201526f151bdad95b881251081a5b9d985b1a5960821b604482015260640161056e565b61091c610916600b546001600160a01b031690565b6000610a3260085490565b8210610a955760405162461bcd60e51b815260206004820152602c60248201527f455243373231456e756d657261626c653a20676c6f62616c20696e646578206f60448201526b7574206f6620626f756e647360a01b606482015260840161056e565b60088281548110610ab657634e487b7160e01b600052603260045260246000fd5b90600052602060002001549050919050565b6000818152600260205260408120546001600160a01b0316806104615760405162461bcd60e51b815260206004820152602960248201527f4552433732313a206f776e657220717565727920666f72206e6f6e657869737460448201526832b73a103a37b5b2b760b91b606482015260840161056e565b606061046182604051806040016040528060048152602001634e45434b60e01b8152506012805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610ba390612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610bcf90612ebb565b8015610c1c5780601f10610bf157610100808354040283529160200191610c1c565b820191906000526020600020905b815481529060010190602001808311610bff57829003601f168201915b505050505081526020019060010190610b84565b60006001600160a01b038216610c9b5760405162461bcd60e51b815260206004820152602a60248201527f4552433732313a2062616c616e636520717565727920666f7220746865207a65604482015269726f206164647265737360b01b606482015260840161056e565b506001600160a01b031660009081526003602052604090205490565b600b546001600160a01b03163314610ce15760405162461bcd60e51b815260040161056e90612da7565b610ceb6000611d91565b565b60606001805461047690612ebb565b606061046182604051806040016040528060048152602001631211505160e21b815250600e805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610d6090612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610d8c90612ebb565b8015610dd95780601f10610dae57610100808354040283529160200191610dd9565b820191906000526020600020905b815481529060010190602001808311610dbc57829003601f168201915b505050505081526020019060010190610d41565b6060610461826040518060400160405280600581526020016415d05254d560da1b815250600f805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610e5290612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610e7e90612ebb565b8015610ecb5780601f10610ea057610100808354040283529160200191610ecb565b820191906000526020600020905b815481529060010190602001808311610eae57829003601f168201915b505050505081526020019060010190610e33565b606061046182604051806040016040528060068152602001652ba2a0a827a760d11b815250600c805480602002602001604051908101604052809291908181526020016000905b8282101561079a578382906000526020600020018054610f4590612ebb565b80601f0160208091040260200160405190810160405280929190818152602001828054610f7190612ebb565b8015610fbe5780601f10610f9357610100808354040283529160200191610fbe565b820191906000526020600020905b815481529060010190602001808311610fa157829003601f168201915b505050505081526020019060010190610f26565b6001600160a01b03821633141561102b5760405162461bcd60e51b815260206004820152601960248201527f4552433732313a20617070726f766520746f2063616c6c657200000000000000604482015260640161056e565b3360008181526005602090815260408083206001600160a01b03871680855290835292819020805460ff191686151590811790915590519081529192917f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31910160405180910390a35050565b6110a13383611ad1565b6110bd5760405162461bcd60e51b815260040161056e90612ddc565b6110c984848484611de3565b50505050565b6060610461826040518060400160405280600481526020016352494e4760e01b8152506013805480602002602001604051908101604052809291908181526020016000905b8282101561079a57838290600052602060002001805461113390612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461115f90612ebb565b80156111ac5780601f10611181576101008083540402835291602001916111ac565b820191906000526020600020905b81548152906001019060200180831161118f57829003601f168201915b505050505081526020019060010190611114565b60606111ca6125d5565b60405180610120016040528060fd815260200161304960fd913981526111ef83610edf565b81600160200201819052506040518060600160405280602881526020016131af60289139604082015261122183611559565b6060808301919091526040805191820190526028808252612f7e6020830139608082015261124e83610cfc565b60a082015260408051606081019091526028808252612ff8602083013960c082015261127983610ded565b60e08201526040805160608101909152602980825261302060208301396101008201526112a5836106a9565b61012082015260408051606081019091526029808252612fcf60208301396101408201526112d283611468565b6101608201526040805160608101909152602980825261314660208301396101808201526112ff83610b3f565b6101a082015260408051606081019091526029808252612fa660208301396101c082015261132c836110cf565b6101e0820152604080518082018252600d81526c1e17ba32bc3a1f1e17b9bb339f60991b602080830191909152610200840191909152825181840151838501516060860151608087015160a088015160c089015160e08a01516101008b0151995160009a61139c9a9091016128bf565b60408051808303601f19018152908290526101208401516101408501516101608601516101808701516101a08801516101c08901516101e08a01516102008b01519799506113ef988a98906020016128bf565b6040516020818303038152906040529050600061143c61140e86611e16565b61141784611f30565b604051602001611428929190612b2a565b604051602081830303815290604052611f30565b90508060405160200161144f9190612cc0565b60408051601f1981840301815291905295945050505050565b606061046182604051806040016040528060048152602001631210539160e21b8152506011805480602002602001604051908101604052809291908181526020016000905b8282101561079a5783829060005260206000200180546114cc90612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546114f890612ebb565b80156115455780601f1061151a57610100808354040283529160200191611545565b820191906000526020600020905b81548152906001019060200180831161152857829003601f168201915b5050505050815260200190600101906114ad565b6060610461826040518060400160405280600581526020016410d21154d560da1b815250600d805480602002602001604051908101604052809291908181526020016000905b8282101561079a5783829060005260206000200180546115be90612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546115ea90612ebb565b80156116375780601f1061160c57610100808354040283529160200191611637565b820191906000526020600020905b81548152906001019060200180831161161a57829003601f168201915b50505050508152602001906001019061159f565b600b546001600160a01b031633146116755760405162461bcd60e51b815260040161056e90612da7565b6001600160a01b0381166116da5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161056e565b6116e381611d91565b50565b60006001600160e01b031982166380ac58cd60e01b148061171757506001600160e01b03198216635b5e139f60e01b145b8061046157506301ffc9a760e01b6001600160e01b0319831614610461565b600081815260046020526040902080546001600160a01b0319166001600160a01b038416908117909155819061176b82610ac8565b6001600160a01b03167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45050565b606060006117da846117b587611e16565b6040516020016117c6929190612890565b6040516020818303038152906040526120a4565b90506000838451836117ec9190612f11565b8151811061180a57634e487b7160e01b600052603260045260246000fd5b6020026020010151905060006015836118239190612f11565b9050600e81111561188a576014805483919061183f9086612f11565b8154811061185d57634e487b7160e01b600052603260045260246000fd5b90600052602060002001604051602001611878929190612980565b60405160208183030381529060405291505b60138110611ac75761189a6125fd565b601580546118a89086612f11565b815481106118c657634e487b7160e01b600052603260045260246000fd5b9060005260206000200180546118db90612ebb565b80601f016020809104026020016040519081016040528092919081815260200182805461190790612ebb565b80156119545780601f1061192957610100808354040283529160200191611954565b820191906000526020600020905b81548152906001019060200180831161193757829003601f168201915b50505050508160006002811061197a57634e487b7160e01b600052603260045260246000fd5b60200201526016805461198d9086612f11565b815481106119ab57634e487b7160e01b600052603260045260246000fd5b9060005260206000200180546119c090612ebb565b80601f01602080910402602001604051908101604052809291908181526020018280546119ec90612ebb565b8015611a395780601f10611a0e57610100808354040283529160200191611a39565b820191906000526020600020905b815481529060010190602001808311611a1c57829003601f168201915b505050505081600160028110611a5f57634e487b7160e01b600052603260045260246000fd5b60200201526013821415611a9b578051602080830151604051611a859392879101612a3e565b6040516020818303038152906040529250611ac5565b8051602080830151604051611ab39392879101612aac565b60405160208183030381529060405292505b505b5095945050505050565b6000818152600260205260408120546001600160a01b0316611b4a5760405162461bcd60e51b815260206004820152602c60248201527f4552433732313a206f70657261746f7220717565727920666f72206e6f6e657860448201526b34b9ba32b73a103a37b5b2b760a11b606482015260840161056e565b6000611b5583610ac8565b9050806001600160a01b0316846001600160a01b03161480611b905750836001600160a01b0316611b85846104f9565b6001600160a01b0316145b80611bc057506001600160a01b0380821660009081526005602090815260408083209388168352929052205460ff165b949350505050565b826001600160a01b0316611bdb82610ac8565b6001600160a01b031614611c435760405162461bcd60e51b815260206004820152602960248201527f4552433732313a207472616e73666572206f6620746f6b656e2074686174206960448201526839903737ba1037bbb760b91b606482015260840161056e565b6001600160a01b038216611ca55760405162461bcd60e51b8152602060048201526024808201527f4552433732313a207472616e7366657220746f20746865207a65726f206164646044820152637265737360e01b606482015260840161056e565b611cb08383836120d5565b611cbb600082611736565b6001600160a01b0383166000908152600360205260408120805460019290611ce4908490612e78565b90915550506001600160a01b0382166000908152600360205260408120805460019290611d12908490612e2d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b0386811691821790925591518493918716917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef91a4505050565b611d8d82826040518060200160405280600081525061218d565b5050565b600b80546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b611dee848484611bc8565b611dfa848484846121c0565b6110c95760405162461bcd60e51b815260040161056e90612d55565b606081611e3a5750506040805180820190915260018152600360fc1b602082015290565b8160005b8115611e645780611e4e81612ef6565b9150611e5d9050600a83612e45565b9150611e3e565b60008167ffffffffffffffff811115611e8d57634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611eb7576020820181803683370190505b5090505b8415611bc057611ecc600183612e78565b9150611ed9600a86612f11565b611ee4906030612e2d565b60f81b818381518110611f0757634e487b7160e01b600052603260045260246000fd5b60200101906001600160f81b031916908160001a905350611f29600a86612e45565b9450611ebb565b805160609080611f50575050604080516020810190915260008152919050565b60006003611f5f836002612e2d565b611f699190612e45565b611f74906004612e59565b90506000611f83826020612e2d565b67ffffffffffffffff811115611fa957634e487b7160e01b600052604160045260246000fd5b6040519080825280601f01601f191660200182016040528015611fd3576020820181803683370190505b509050600060405180606001604052806040815260200161316f604091399050600181016020830160005b8681101561205f576003818a01810151603f601282901c8116860151600c83901c8216870151600684901c831688015192909316870151600891821b60ff94851601821b92841692909201901b91160160e01b835260049092019101611ffe565b506003860660018114612079576002811461208a57612096565b613d3d60f01b600119830152612096565b603d60f81b6000198301525b505050918152949350505050565b6000816040516020016120b79190612874565b60408051601f19818403018152919052805160209091012092915050565b6001600160a01b0383166121305761212b81600880546000838152600960205260408120829055600182018355919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30155565b612153565b816001600160a01b0316836001600160a01b0316146121535761215383826122cd565b6001600160a01b03821661216a576106a48161236a565b826001600160a01b0316826001600160a01b0316146106a4576106a48282612443565b6121978383612487565b6121a460008484846121c0565b6106a45760405162461bcd60e51b815260040161056e90612d55565b60006001600160a01b0384163b156122c257604051630a85bd0160e11b81526001600160a01b0385169063150b7a0290612204903390899088908890600401612d05565b602060405180830381600087803b15801561221e57600080fd5b505af192505050801561224e575060408051601f3d908101601f1916820190925261224b91810190612814565b60015b6122a8573d80801561227c576040519150601f19603f3d011682016040523d82523d6000602084013e612281565b606091505b5080516122a05760405162461bcd60e51b815260040161056e90612d55565b805181602001fd5b6001600160e01b031916630a85bd0160e11b149050611bc0565b506001949350505050565b600060016122da84610c30565b6122e49190612e78565b600083815260076020526040902054909150808214612337576001600160a01b03841660009081526006602090815260408083208584528252808320548484528184208190558352600790915290208190555b5060009182526007602090815260408084208490556001600160a01b039094168352600681528383209183525290812055565b60085460009061237c90600190612e78565b600083815260096020526040812054600880549394509092849081106123b257634e487b7160e01b600052603260045260246000fd5b9060005260206000200154905080600883815481106123e157634e487b7160e01b600052603260045260246000fd5b600091825260208083209091019290925582815260099091526040808220849055858252812055600880548061242757634e487b7160e01b600052603160045260246000fd5b6001900381819060005260206000200160009055905550505050565b600061244e83610c30565b6001600160a01b039093166000908152600660209081526040808320868452825280832085905593825260079052919091209190915550565b6001600160a01b0382166124dd5760405162461bcd60e51b815260206004820181905260248201527f4552433732313a206d696e7420746f20746865207a65726f2061646472657373604482015260640161056e565b6000818152600260205260409020546001600160a01b0316156125425760405162461bcd60e51b815260206004820152601c60248201527f4552433732313a20746f6b656e20616c7265616479206d696e74656400000000604482015260640161056e565b61254e600083836120d5565b6001600160a01b0382166000908152600360205260408120805460019290612577908490612e2d565b909155505060008181526002602052604080822080546001600160a01b0319166001600160a01b03861690811790915590518392907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef908290a45050565b6040518061022001604052806011905b60608152602001906001900390816125e55790505090565b60408051808201909152606081526001602082016125e5565b80356001600160a01b038116811461262d57600080fd5b919050565b600060208284031215612643578081fd5b61264c82612616565b9392505050565b60008060408385031215612665578081fd5b61266e83612616565b915061267c60208401612616565b90509250929050565b600080600060608486031215612699578081fd5b6126a284612616565b92506126b060208501612616565b9150604084013590509250925092565b600080600080608085870312156126d5578081fd5b6126de85612616565b93506126ec60208601612616565b925060408501359150606085013567ffffffffffffffff8082111561270f578283fd5b818701915087601f830112612722578283fd5b81358181111561273457612734612f51565b604051601f8201601f19908116603f0116810190838211818310171561275c5761275c612f51565b816040528281528a6020848701011115612774578586fd5b82602086016020830137918201602001949094529598949750929550505050565b600080604083850312156127a7578182fd5b6127b083612616565b9150602083013580151581146127c4578182fd5b809150509250929050565b600080604083850312156127e1578182fd5b6127ea83612616565b946020939093013593505050565b600060208284031215612809578081fd5b813561264c81612f67565b600060208284031215612825578081fd5b815161264c81612f67565b600060208284031215612841578081fd5b5035919050565b60008151808452612860816020860160208601612e8f565b601f01601f19169290920160200192915050565b60008251612886818460208701612e8f565b9190910192915050565b600083516128a2818460208801612e8f565b8351908301906128b6818360208801612e8f565b01949350505050565b60008a516128d1818460208f01612e8f565b8a516128e38183860160208f01612e8f565b8a5191840101906128f8818360208e01612e8f565b895161290a8183850160208e01612e8f565b8951929091010190612920818360208c01612e8f565b87516129328183850160208c01612e8f565b8751929091010190612948818360208a01612e8f565b855161295a8183850160208a01612e8f565b8551929091010190612970818360208801612e8f565b019b9a5050505050505050505050565b6000835160206129938285838901612e8f565b600160fd1b9184019182528454600190849080831c818416806129b757607f821691505b8582108114156129d557634e487b7160e01b88526022600452602488fd5b8080156129e957600181146129fe57612a2e565b60ff1984168887015282880186019450612a2e565b60008b815260209020895b84811015612a245781548a8201890152908701908801612a09565b5050858389010194505b50929a9950505050505050505050565b601160f91b81528351600090612a5b816001850160208901612e8f565b600160fd1b6001918401918201528451612a7c816002840160208901612e8f565b61011160f51b600292909101918201528351612a9f816004840160208801612e8f565b0160040195945050505050565b601160f91b81528351600090612ac9816001850160208901612e8f565b600160fd1b6001918401918201528451612aea816002840160208901612e8f565b61011160f51b600292909101918201528351612b0d816004840160208801612e8f565b62202b3160e81b6004929091019182015260070195945050505050565b6e7b226e616d65223a2022426167202360881b81528251600090612b5581600f850160208801612e8f565b80830190507f222c20226465736372697074696f6e223a20224c6f6f742069732072616e646f600f8201527f6d697a656420616476656e747572657220676561722067656e65726174656420602f8201527f616e642073746f726564206f6e20636861696e2e2053746174732c20696d6167604f8201527f65732c20616e64206f746865722066756e6374696f6e616c6974792061726520606f8201527f696e74656e74696f6e616c6c79206f6d697474656420666f72206f7468657273608f8201527f20746f20696e746572707265742e204665656c206672656520746f207573652060af8201527f4c6f6f7420696e20616e792077617920796f752077616e742e222c2022696d6160cf8201527f6765223a2022646174613a696d6167652f7376672b786d6c3b6261736536342c60ef82015261010f8451612c9f8183850160208901612e8f565b612cb5828285010161227d60f01b815260020190565b979650505050505050565b7f646174613a6170706c69636174696f6e2f6a736f6e3b6261736536342c000000815260008251612cf881601d850160208701612e8f565b91909101601d0192915050565b6001600160a01b0385811682528416602082015260408101839052608060608201819052600090612d3890830184612848565b9695505050505050565b60208152600061264c6020830184612848565b60208082526032908201527f4552433732313a207472616e7366657220746f206e6f6e20455243373231526560408201527131b2b4bb32b91034b6b83632b6b2b73a32b960711b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526031908201527f4552433732313a207472616e736665722063616c6c6572206973206e6f74206f6040820152701ddb995c881b9bdc88185c1c1c9bdd9959607a1b606082015260800190565b60008219821115612e4057612e40612f25565b500190565b600082612e5457612e54612f3b565b500490565b6000816000190483118215151615612e7357612e73612f25565b500290565b600082821015612e8a57612e8a612f25565b500390565b60005b83811015612eaa578181015183820152602001612e92565b838111156110c95750506000910152565b600181811c90821680612ecf57607f821691505b60208210811415612ef057634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612f0a57612f0a612f25565b5060010190565b600082612f2057612f20612f3b565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160e01b0319811681146116e357600080fdfe3c2f746578743e3c7465787420783d2231302220793d2236302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223136302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223132302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d2238302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223130302220636c6173733d2262617365223e3c73766720786d6c6e733d22687474703a2f2f7777772e77332e6f72672f323030302f73766722207072657365727665417370656374526174696f3d22784d696e594d696e206d656574222076696577426f783d223020302033353020333530223e3c7374796c653e2e62617365207b2066696c6c3a2077686974653b20666f6e742d66616d696c793a2073657269663b20666f6e742d73697a653a20313470783b207d3c2f7374796c653e3c726563742077696474683d223130302522206865696768743d2231303025222066696c6c3d22626c61636b22202f3e3c7465787420783d2231302220793d2232302220636c6173733d2262617365223e3c2f746578743e3c7465787420783d2231302220793d223134302220636c6173733d2262617365223e4142434445464748494a4b4c4d4e4f505152535455565758595a6162636465666768696a6b6c6d6e6f707172737475767778797a303132333435363738392b2f3c2f746578743e3c7465787420783d2231302220793d2234302220636c6173733d2262617365223ea2646970667358221220afd8a42edeeb6b78a1f2564f8301af9f1f72be2eedf980ee45200f6459d4c45064736f6c63430008040033',
      salt: toBytes('hello world'),
      opcode: 'CREATE2',
    }),
  ).toMatchInlineSnapshot('"0x98F06eF857728F5a10e9968b881739bf9638300A"')
})
